package com.fengdi.solutions.middle;

import com.fengdi.publicObject.ListNode;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

/**
 * @author FengDi
 * @Title 237. 删除链表中的节点
 * @Description
 * 有一个单链表的 head，我们想删除它其中的一个节点 node。
 * 给你一个需要删除的节点 node 。你将 无法访问 第一个节点  head。
 * 链表的所有值都是 唯一的，并且保证给定的节点 node 不是链表中的最后一个节点。
 * 删除给定的节点。注意，删除节点并不是指从内存中删除它。这里的意思是：
 * 给定节点的值不应该存在于链表中。
 * 链表中的节点数应该减少 1。
 * node 前面的所有值顺序相同。
 * node 后面的所有值顺序相同。
 * */
public class _237_ {
    public void deleteNode(ListNode node) {
        List<Integer> workArr = new ArrayList<>();
        ListNode cur = node.next;
        while (cur != null) {
            workArr.add(cur.val);
            cur = cur.next;
        }

        for(int item : workArr) {
            node.val = item;
            if (workArr.indexOf(item) == workArr.size() - 1) {
                break;
            }
            node = node.next;
        }

        node.next = null;
        return;
    }
}
